iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0

今日目標說明

資料庫準備就緒後,我們開始來蓋後端的地基。今天我們要在 Express 專案中,建立第一支用來抓取「寶可夢基礎圖鑑資料」的 API (/api/pokemon)。在這之前,我們先來探討為什麼大家都說要把 API 寫成 RESTful 風格。

【技術原理解析】什麼是 RESTful API?

我們在設計網址路由時,與其用動詞 (例如 /getPokemon, /addPokemon),RESTful 風格告訴我們應該用名詞來代表資源,並搭配 HTTP 動詞來表達動作。這種標準化可以讓前後端溝通更順暢:

HTTP 動詞 路由範例 動作意義 成功狀態碼 (HTTP Status)
GET /api/pokemon 讀取所有寶可夢列表 200 OK
GET /api/pokemon/25 讀取特定一隻 (皮卡丘) 200 OK (若找不到則 404 Not Found)
POST /api/pokemon 新增一隻寶可夢 201 Created
PUT /api/pokemon/25 完整覆寫這隻寶可夢的資料 200 OK
PATCH /api/pokemon/25 部分修改 (例如只改屬性) 200 OK
DELETE /api/pokemon/25 刪除這隻寶可夢 204 No Content200 OK

核心程式碼片段

我們建立 src/routes/pokemon.ts,用 GET 方法實作基礎的圖鑑撈取:

import { Router, Request, Response } from 'express';
import { db } from '../db';

const router = Router();

// GET /api/pokemon
router.get('/', async (req: Request, res: Response) => {
  try {
    const result = await db.execute('SELECT pokemon_id, name_zh, name_en, gender_type FROM pokemon');
    res.json(result.rows);
  } catch (error) {
    console.error(error);
    res.status(500).json({ error: 'Internal server error' });
  }
});

export default router;

接著在 src/index.ts 註冊這個 Router:

import pokemonRoutes from './routes/pokemon';
app.use('/api/pokemon', pokemonRoutes);

實際畫面截圖

Postman測試GET請求

使用 Postman 發送 GET 請求到 http://localhost:3000/api/pokemon,成功回傳 JSON 陣列資料的畫面。這代表您的後端與資料庫正式打通了!

小結

我們成功寫出了符合 RESTful 風格的第一支 API!明天,我們將面對更進階的挑戰:設計儲存玩家「持有紀錄」的關聯式資料表,並了解 Foreign Key 的重要性。


上一篇
DAY 5:雲端資料庫 Turso 申請與連線設定
下一篇
DAY 7:規劃關聯式資料表 (寶可夢基礎資料與持有紀錄)
系列文
就決定是你了!打造寶可夢持有追蹤系統 (React x Express)7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言